package org.wzy.spring.framework.beans.factory.config;

/**
 * 模拟 Spring BeanDefinition 接口实现, 用于存储配置文件中的信息
 * 相当于保存在内存中的配置信息
 *
 * @author wzy_h
 * @version v_1.0
 * @date 2018/5/19 23:08
 * @since 1.8
 */
public interface BeanDefinition {

    /**
     * 获取 Bean className
     *
     * @return Bean className
     * @author wzy_h
     * @date 2018/5/19 23:31
     * @since 1.8
     */
    String getBeanClassName();

    /**
     * 设置 Bean className
     *
     * @param className className
     * @author wzy_h
     * @date 2018/5/19 23:32
     * @since 1.8
     */
    void setBeanClassName(String className);

    /**
     * 获取 Factory BeanName
     *
     * @return Factory BeanName
     * @author wzy_h
     * @date 2018/5/19 23:33
     * @since 1.8
     */
    String getFactoryBeanName();

    /**
     * 设置 Factory BeanName
     *
     * @author wzy_h
     * @date 2018/5/19 23:33
     * @since 1.8
     */
    void setFactoryBeanName(String factoryBeanName);

    /**
     * 获取 Bean 是否为延时加载
     *
     * @return 是|否
     * @author wzy_h
     * @date 2018/5/19 23:34
     * @since 1.8
     */
    boolean isLazyInit();

    /**
     * 设置 Bean 是否为延时加载
     *
     * @param lazyInit 延时加载标志
     * @author wzy_h
     * @date 2018/5/19 23:33
     * @since 1.8
     */
    void setLazyInit(boolean lazyInit);

    /**
     * 获取 Bean 是否为单例
     *
     * @return 是|否
     * @author wzy_h
     * @date 2018/5/19 23:36
     * @since 1.8
     */
    boolean isSingleton();

    /**
     * 获取 Bean 是否为原型
     *
     * @return 是|否
     * @author wzy_h
     * @date 2018/5/19 23:36
     * @since 1.8
     */
    boolean isPrototype();

}
